home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0045
/
mbm_src.exe
/
MENUDEMO.BAK
< prev
next >
Wrap
Text File
|
1992-03-22
|
11KB
|
291 lines
program menudemo;
{$S-} {Vollversion 4.1 vom 22.03.1992}
{(C) 1990-92 by Software-Entwicklung Uwe Kuhring}
uses drv_link,crt,graph,menulib,winlib,mouselib;
var b,x,y,t : integer;
ende : boolean;
mychar : char;
window : integer;
wtmp : array [1..5] of integer;
altwy : integer;
name : string;
tableau : integer;
procedure get_mychar(var mychar : char);
begin
if keypressed then mychar:=readkey else begin
mychar:=chr(255);
exit;
end;
if (ord(mychar)=13) or (ord(mychar)=27) then exit
else if ord(mychar)=0 then begin
if keypressed then mychar:=readkey else begin
mychar:=chr(255);
exit;
end;
end
else mychar:=chr(255);
end;
procedure make_menu_1;
begin {Definition aller Menüeinträge}
menuregister(1,0,'Aktiva'); {des ersten Menüs mit Namen}
menuregister(1,1,'aktivierbar Nr.1'); {'Aktiva'}
menuregister(1,2,'aktivierbar Nr.2');
menuregister(1,3,'aktivierbar Nr.3');
menuregister(1,4,'aktivierbar Nr.4');
menuregister(1,5,'unanwählbar Nr.1'); menumark(1,5,1) ;
menuregister(1,6,'unanwählbar Nr.2'); menumark(1,6,1) ;
menuregister(1,7,'aktivierbar Nr.5');
menuregister(1,16,'ganz abgesetzt'); {Die Einträge 5 und 6 werden als}
end; {unzugänglich gekennzeichnet}
procedure make_menu_2;
begin
menuregister(2,0,'Rev_Demo');
menuregister(2,1,'durchrollen 01');
menuregister(2,2,'durchrollen 02');
menuregister(2,3,'durchrollen 03'); {Hier wird das Menü Nr. 2 mit dem}
menuregister(2,4,'durchrollen 04'); {Namen Rev_Demo erstellt.}
menuregister(2,5,'durchrollen 05'); {Die Erstellung wäre in einer}
menuregister(2,6,'durchrollen 06'); {Schleife einfacher aber auch}
menuregister(2,7,'durchrollen 07'); {unübersichtlicher geworden.}
menuregister(2,8,'durchrollen 08');
menuregister(2,9,'durchrollen 09');
menuregister(2,10,'durchrollen 10');
menuregister(2,11,'durchrollen 11');
menuregister(2,12,'durchrollen 12');
menuregister(2,13,'durchrollen 13');
menuregister(2,14,'durchrollen 14');
menuregister(2,15,'durchrollen 15');
menuregister(2,16,'durchrollen 16');
end;
procedure make_menu_3;
begin
menuregister(3,0,'Komandos'); {Dieses Menü bietet die Befehle}
menuregister(3,1,'Aktivier-Demo'); {des Demo-Programmes an.}
menuregister(3,2,'Durchroll-Demo');
menuregister(3,3,'Window-Demo');
menuregister(3,4,'Random Lines');
menuregister(3,5,'Info-Fenster');
menuregister(3,6,'Demo beenden');
end;
procedure make_menu_4; {Ein Menü ohne weitere Funktion}
begin
menuregister(4,0,'Infos');
menuregister(4,1,'Mouse + Buttons');
menuregister(4,2,'Menüs + Windows');
menuregister(4,3,' für ');
menuregister(4,4,'Turbo Pascal 5.X');
menuregister(4,5,' und ');
menuregister(4,6,'Turbo Pascal 6.X');
menuregister(4,7,' ***** ');
menuregister(4,8,' MBM-Paket ');
menuregister(4,9,'Version 4.1 (C)');
menuregister(4,10,'1992 Uwe Kuhring');
end;
procedure do_menu_1;
var d1,d2,b : integer; {Verwaltung des 1. Menüs}
begin {Wenn ein Untermenü gewählt wurde}
if y>0 then begin {(y>0) dann ent(markieren)}
if menu[1,y].menumark=0
then menumark(1,y,2)
else menumark(1,y,0);
repeat
mousestat (d1,d2,b); {Holt den Zustand der Mausknöpfe}
until b=0; {solange, bis Maus losgelassen}
end;
end;
{Das 2. Menü ist funktionslos}
procedure do_menu_3; {Verwaltung des 3. Menüs}
var t,u,x1,y1,x2,y2 : integer;
s : string;
begin
menupush;
case y of
1 : begin
menupull(1); {Alle Einträge im 1. Menü mark.}
for t:=1 to 16 do begin
if menu[1,t].menuexists then
if menu[1,t].menumark<>1 then menumark(1,t,2);
end; {Nur die, die auch zugänglich sind}
menupush;
end;
2 : begin
menupull(2);
for u:=0 to 7 do for t:=1 to 16 do menurevert(t,1);
menurevert(1,0);
menupush; {Alle Menüpunkte des 2. Menüs}
end; {acht mal durchrollen lassen}
3 : begin
for t:=1 to 5 do begin
open_window(t*10,t*3,t*10+20,t*4,t*3,t,wtmp[t],'Window-Demo');
str(t:1,s);
wprint(wtmp[t],1,0,t*3,'Fenster #'+s);
wprint(wtmp[t],1,1,t*3,'Hallo Welt!');
end;
delay(3000);
for t:=5 downto 1 do begin
close_window(wtmp[t]);
delay(500);
end;
for t:=0 to 4 do begin
for u:=0 to 7 do begin
wrevert(window,u);
delay(50);
wrevert(window,u);
end;
end;
open_window(20,10,60,12,11,1,wtmp[1],'Input-Window');
wprint(wtmp[1],1,0,14,'Bitte geben Sie Ihren Namen ein:');
winput(wtmp[1],1,1,14,name);
wprint(wtmp[1],1,2,14,'Herzlichen Dank '+name);
delay(2000);
close_window(wtmp[1]);
end;
4 : begin
mouseoff; {sollte vor jedem Zeichnen in der Grafikebene erfolgen}
randomize;
open_window(30,10,50,20,11,4,wtmp[1],'Line-Window');
for t:=0 to 50 do begin
x1:=((getmaxx+1) div 80)*30+random(((getmaxx+1) div 80)*21);
x2:=((getmaxx+1) div 80)*30+random(((getmaxx+1) div 80)*21);
y1:=((getmaxy+1) div 25)*10+random(((getmaxy+1) div 25)*11);
y2:=((getmaxy+1) div 25)*10+random(((getmaxy+1) div 25)*11);
line (x1,y1,x2,y2);
end; {51 Zufallslinien zeichnen lassen}
mouseon; {nicht vergessen!}
delay(3000);
close_window(wtmp[1]);
end;
5 : info_window('!','In solchen Info-Fenstern','können Mitteilungen schnell'
,'und einfach erteilt werden.');
6 : begin
ende:=true; {Programm beenden lassen durch}
clear_window(window); {setzen der Ende Variablen}
wprint(window,1,0,12,'Auf Wiedersehen!');
wprint(window,1,1,1,''); {Auch das funktioniert ab V3.1}
wprint(window,1,2,14,'Und einen schönen Tag noch,');
wprint(window,1,3,11,name+'.');
delay(3000);
close_window(window);
close_window(tableau);
delay(1000);
end;
end;
end;
procedure make_menu_colors;
begin
color_array[1,2]:=2; {Abwandeln der Default-Werte}
color_array[2,2]:=13; {Default = 1,11,14,12 pro Eintrag}
color_array[4,0]:=7;
color_array[4,2]:=0;
color_array[4,3]:=3;
end;
{Menü-Demoprogramm Hauptteil}
begin
ende:=false;
enter_default_graphmode; {Grafikmodus und Zeichensatz wählen}
cleardevice; {Grafikbildschirm vollständig löschen}
altwy:=-1; {Kein invertierter Eintrag im Window}
if vga_ega_card then begin
setfillstyle(1,3); {Bildschirm-Muster mit Cyan-Color}
bar(0,0,getmaxx,getmaxy); {füllen};
setcolor(10);
end;
for t:=1 to getmaxx div 30 do circle (t*20,getmaxy div 2,getmaxy div 40*t);
outtextxy(0,getmaxy div 20,' Texte unter der Menüleiste bleiben erhalten.');
{Kreise und einen Text in die Grafik eintragen}
make_menu_1;
make_menu_2;
make_menu_3; {Alle Menüpunkte definieren}
make_menu_4;
if vga_ega_card then make_menu_colors; {Eventuell Farben definieren}
mouseon;
menuon; {Maus und Menü einschalten}
open_window(5,5,37,12,12,1,window,'Programm-Information');
wprint(window,1,0,11,'Die Tastenkombinationen');
wprint(window,1,1,12,'<ALT> <F1> bis <ALT> <F4>');
wprint(window,1,2,11,'aktivieren die Menüpunkte.');
wprint(window,1,3,14,'Die Cursortasten selektieren.');
wprint(window,1,4,12,'<Return>');
wprint(window,10,4,11,'aktiviert den Eintrag.');
wprint(window,1,5,12,'<ESC>');
wprint(window,7,5,11,'klappt das Menü hoch.');
wprint(window,1,6,12,'<F1>');
wprint(window,6,6,11,'öffnet ein Hilfsfenster.');
wprint(window,1,7,15,'Eine Maus wird unterstützt.');
open_window(4,21,18,22,7,7,tableau,''); {<= auch ein Fenster!}
wprint(tableau,1,0,11,'Auch dies ist');
wprint(tableau,1,1,14,'ein Fenster !');
name:='unbekannter Gast';
repeat
get_mychar(mychar);
if mychar=chr(27) then begin {Hat der User <ESC> gedrückt ?}
if menupulled<>0 then menupush; {Ja, dann Menü hochklappen}
mychar:=chr(255); {mychar "löschen"}
end;
if mychar=chr(59) then begin {Wenn User <F1> für "Hilfe" drückt,}
open_window(20,10,60,13,10,1,wtmp[1],'Hilfe'); {Fenster auf und}
wprint(wtmp[1],1,0,14,'Sie haben <F1> gedrückt.'); {dann helfen}
wprint(wtmp[1],1,1,12,'Hier erscheint dann Ihr Hilfstext.');
wprint(wtmp[1],1,2,14,'Kontextbezogen durch Library-Variablen.');
wprint(wtmp[1],1,3,11,'Ein Tastendruck schließt diese Fenster.');
repeat until keypressed;
mychar:=readkey ; mychar:=chr(255);
close_window(wtmp[1]);
end;
menustat(x,y,b,mychar); {Zustand von Maus/Menu erfragen}
if menupulled=0 then if x>0 then menupull(x); {pullen falls nötig}
if menupulled<>x then begin
if x=0 then if menuleft then menupush; {pushen falls die Maus}
if x<>0 then menupull(x); {das Menü verlassen hat}
end;
if x=0 then menurevert(1,0) else if y>0 then menurevert(y,1);
if b=1 then {linker Mausknopf wurde gedrückt}
case x of
0 : ; {Maus ist über keiner Menüsspalte}
1 : Do_Menu_1; {Maus ist über 1. Menü}
2 : menupush; {Maus ist über 2. Menü, das hat keine Funktion}
3 : Do_Menu_3; {Maus ist über 3. Menü, Komandomenü aufrufen}
4 : menupush; {4. Menü hat wieder keine Funktion}
end;
if menupulled=0 then begin
window_stat(window,y,b,mychar);
if y<>altwy then if y>-1 then begin
wrevert(window,altwy);
altwy:=y;
wrevert(window,altwy);
end;
if b=1 then if not ende then begin
wrevert(window,altwy);
delay (10);
wrevert(window,altwy);
end;
end;
until ende;
menuoff;
mouseoff; {Maus und Menü ausschalten);
cleardevice; {Abschließendes Löschen des Grafikbildschirmes}
closegraph; {Grafikmodus wieder verlassen};
end.